package com.tao.YanMoDesignPattern.template.callBack;

import com.tao.YanMoDesignPattern.template.case1_extend.LoginModel;

/**
 * @Author Mi_Tao
 * @Date 2023/7/22
 * @Description 登陆控制的模板方法需要回调的接口，需要把所有需要的接口方法都定义出来
 * 或者说是所有可以被扩展的方法都需要被定义出来
 * @Version 1.0
 **/
public interface LoginCallback {

    /**
     * 找到登录用户
     *
     * @param loginId 登录id
     * @return {@link LoginModel}
     */
    public LoginModel findLoginUser(String loginId);

    /**
     * 加密pwd
     *
     * @param pwd           密码
     * @param loginTemplate 登录模板
     * @return {@link String} 加密后的密码
     */
    public String encryptPwd(String pwd, LoginTemplate loginTemplate);

    /**
     * 匹配
     *
     * @param lm            lm
     * @param dbLm          db lm
     * @param loginTemplate 登录模板
     * @return boolean
     */
    public boolean match(LoginModel lm,LoginModel dbLm,LoginTemplate loginTemplate);
}
